from openpyxl import load_workbook
from openpyxl import Workbook
import pandas as pd
import os

print('请选择要做的操作（1 拆分  2 合并）：', end='')
choice = input()

if choice == '1':
    print('请输入excel文档完整路径（例子：E:\BaiduNetdiskDownload\你好.xlsx）：', end='')
    excel_path = input()

    print('打算在哪个目录下批量生成（例子：D:\dsest）：', end='')
    parent_directory = input()

    # 读取包含多个工作表的Excel文件
    wb = load_workbook(excel_path)

    # 获取所有工作表的名字
    sheet_names = wb.sheetnames

    i = 0
    # 遍历所有工作表并将其保存为单独的Excel文件
    for sheet in sheet_names:
        i += 1
        ws = wb[sheet]
        data = ws.values

        # 创建一个新的DataFrame来存储数据
        df = pd.DataFrame(data)

        # 将当前工作表保存为新的Excel文件
        output_file_name = str(f"{i}-{sheet}.xlsx")
        output_path = parent_directory + '/' + output_file_name  # 添加一个斜杠以确保路径正确
        df.to_excel(output_path)

elif choice == '2':
    print('请输入需要合并的文件的路径（例子：E:\BaiduNetdiskDownload）：', end='')
    excel_path = input()

    # 获取目录下的所有条目
    entries = os.listdir(excel_path)
    print(entries)

    print('需要合并文档中的第几个工作表：', end='')
    which_sheet = int(input())

    print('合并新文档的名称（例子：新建文本文档.xlsx）：', end='')
    creat_xlsx_name = input()

    print('合并文档保存到哪个目录（例子：E:\BaiduNetdiskDownload）：', end='')
    new_excel_path = input()

    # 创建一个Workbook实例对象，用于保存
    write_excel = Workbook()

    # 遍历当前所有条目
    for entry in entries:
        if entry.endswith('.xlsx'):
            # 使用os.path.join()构造完整文件路径
            full_entry_path = os.path.join(excel_path, entry)
            # 读取Excel文件
            read_excel = load_workbook(full_entry_path)
            # 获取指定工作表
            select_sheet = read_excel.worksheets[which_sheet-1]
            # 读取工作表数据
            datas = list(select_sheet.values)  # 将生成器转换为列表

            # 创建并写入工作表数据
            new_ws = write_excel.create_sheet(title=f"{entry.split('.')[0]}-{select_sheet.title}")
            for row in datas:
                new_ws.append(row)

    full_path = os.path.join(new_excel_path, creat_xlsx_name)
    # 删除默认创建的空工作表
    del write_excel['Sheet']
    # 保存合并后的Excel文件
    write_excel.save(full_path)



